=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ Dark Matter Technologies Presents Serial ObjectS (SOS) Release 1.0 By Andrew E. Mileski =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ Overview ======== SOS is a package to help C++ developers produce applications that use serial ports. The package supports high level serial streams for Hayes compatible modems as well as any other serial device. Being stream oriented, SOS is very easy to use. If you are familiar with the standard streams (cin, cout, cerr, clog), you will quickly be able to add serial capabilities to your C++ applications. Originally developed under Borland C++ V4.02, SOS should be easily portable to other compilers since the source code is provided FREE! Registration of licenses is required for COMMERCIAL use. Getting Started =============== 1) Read the terms of the LICENSE in CPYRGHT.TXT and stop here if you do not agree to the terms. 2) Read REGISTER.TXT for registration procedures. 3) Print out the header files for full documentation. 4) See the example of a simple dumb terminal in TEST.CPP (BC++4.02 project file TEST.IDE) 5) For a TurboVision(tm) example, see TVSERIAL.TXT 6) Hack away! Class Inheritance Diagram ========================== streambuf <-- SerialBuf Uart <-- *Serial <-- | +- **SerialStream <-- Modem | iostream <-- * Class Serial makes use of instances of class SerialQueue ** Class SerialStream makes use of an instance of class SerialBuf, which uses an instance of class Serial. Class Descriptions ================== class Modem (files: MODEM.H & MODEM.CPP) A high level iostream oriented class for dealing with Hayes command set compatible modems. This class inherits all the features of the other classes, and is intended to be the "working class" for using ANY kind of serial device. class SerialStream (files: STREAM.H & STREAM.CPP) A high level iostream oriented class for dealing with serial devices. This class offers stream support by simply being a wrapper for the class Serial. class Serial (files: SERIAL.H & SERIAL.CPP) An intermediate level, interrupt driven, byte oriented class for dealing with serial devices. Derived from class Uart and very closely related to it. This class performs all the "magic". Its members are best used when speed is of prime concern. class Uart (files: UART.H & UART.CPP) A very low level register oriented class for dealing with UARTs. Most of the members of this class are protected and inline. this class has no real use outside of class Serial. class SerialBuf (files: STREAM.H & STREAM.CPP) A low level streambuf oriented class for dealing with serial devices. This class is simply a wrapper for the class Serial. class SerialQueue (files: SQUEUE.H & SQUEUE.CPP) A very simple byte oriented queue (fifo) with some level detection capabilities. This class has no real use outside of class Serial, as there are more flexible implimentations available. Planned Revisions ================= The following are planned, but no dates have yet been set for release. Support for non-standard COM ports Support for 16550AFN buffered UARTs Improved speed with unbuffered UARTs using limited polling Support for Borland DOS extenders Support for Hayes ESP serial boards in native mode. Registration ============ To register your license, see the file REGISTER.TXT for details. Registration entitles you to use this software to develop a COMMERCIAL software package, as long as the copyright terms are followed; see the file CPYRGHT.TXT for details on the terms of the license. With registration you will also receive notification of any revisions of this package, and technical support. For NON-COMMERCIAL use of this package, registration is not required; see the file CPYRGHT.TXT for details on the terms of the license. Your support will help ensure the development of this and other products. Addresses ========= For compliments, complaints, suggestions, registration, etc., feel free to contact us at: Compuserve: 70233,3505 Internet: 70233.3505@Compuserve.COM Postal Service: Dark Matter Technologies 210-180 Lees Avenue Ottawa, Ontario Canada K1S 5J6